home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #160 (1992-02)(Rhein-Sieg-Soft).zip / Franz PD Disk #160 (1992-02)(Rhein-Sieg-Soft).adf / Anubis / Docs / Programmer.dok < prev    next >
Text File  |  1992-02-11  |  14KB  |  312 lines

  1. -----------------------------------------------------------------------------
  2.                         31.12.91 * 22:34:27 * Olli
  3. -----------------------------------------------------------------------------
  4.                               T.O.M. Software
  5.             _______         _____     __________     __   _______
  6.            / ___  /\ /\    / ___ \   / ___  ___ \   /_/\ / _____/\
  7.           / /__/ / //  \  / /\_/ /\ / /\_/ /__/ /\ _\_\// /\____\/
  8.          / ___  / //    \/ / // / // / // ___  / // /\ /____  /\
  9.         / /\_/ /_// /\    / // /_// / // /__/ / // /_/_\___/ / /
  10.        /_/ //______/ /\_ / //______/ //______/ //___________/ /
  11.        \_\/ \______\/  \_\/ \______\/ \______\/ \___________\/
  12.  
  13.         Allgemeines Nachrichten - und Binär - Informations - System
  14.  
  15. -----------------------------------------------------------------------------
  16.                 Hinweise für Programmierer von ANUBIS Tools
  17. -----------------------------------------------------------------------------
  18.  
  19. Dieses Dokument ist für Programmierer gedacht, die eigene Programme (Utilities,
  20. OnlineProgramme usw.) für ANUBIS schreiben möchten. Es enthält die Beschreibung
  21. aller wichtigen Datenstrukturen und gibt Hilfestellungen und Tips bei der Pro-
  22. grammierung.
  23.  
  24. Diese Anleitung ist ©1991/92; Oliver Graf - T.O.M. Software und ist fester
  25. Bestandteil des ANUBIS Gesamtpaketes. Es gelten die in Anubis.dok erwähnten
  26. Copyrightbestimmungen.
  27.  
  28. 1. Einführung
  29. ¯¯¯¯¯¯¯¯¯¯¯¯¯
  30.  
  31. ANUBIS ist als offenes System geplant. Jeder Sysop, der ein wenig programmieren
  32. kann, wird früher oder später den Wunsch haben, selber Programme, die er für
  33. wichtig hält, zu schreiben. Bei den meisten Mailbox Programmen fängt hier das
  34. Problem an : Man muß stundenlang rumprobieren, bis man die Datenstrukturen
  35. so weit analysiert hat, bis man sie nutzen kann.
  36.  
  37. Um diese Arbeit zu sparen, werden hier die wichtigsten Datenstrukturen öffent-
  38. lich zugänglich gemacht. Auf diese Weise sollte jeder in der Lage sein, sich
  39. z.B. Konvertierungsprogramme von alten Mailboxdaten zu schreiben.
  40.  
  41. Wer meint, ein nützliches Tool für Anubis geschrieben zu haben und dies der
  42. Öffentlichkeit (d.h. anderen ANUBIS Sysop's) zur Verfügung stellen will, sollte
  43. mit uns Kontakt aufnehmen (siehe unten).
  44.  
  45. 2. Die Datenstrukturen
  46. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  47.  
  48. Es folgt nun eine komplette Beschreibung aller externen Datenstrukturen, die
  49. zur Zeit von ANUBIS benutzt werden. Diese sind in C abgehalten, da dies nun
  50. mal unsere 'Muttersprache' ist.
  51.  
  52. 2.1. Die Userstruktur
  53. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  54.  
  55. Auf der nachfolgenden Struktur baut die Datei "Daten/Userliste" auf.
  56. Die Userliste ist alphabetisch nach dem Usernamen sortiert.
  57.  
  58. typedef struct
  59. {
  60.  char    username[15];        /* Name des Users in der Box */
  61.  char    passwort[15];        /* Passwort (in codierter Form)*/
  62.  int    userlevel;        /* Userlevel [0..42] */
  63.  char    name[30];        /* wirklicher Name */
  64.  char    strasse[40];        /* Anschrift */
  65.  char    ort[30];
  66.  char    telnr[15];        /* Telerings */
  67.  char    rechner[15];        /* Rechnertyp, Ataris nicht erlaubt :-) */
  68.  int    umlaute;        /* für den Umlautwandler */
  69.  int    status;            /* 0 - Gast, 1 - User, 2 - ... */
  70.  int    ansi;            /* Terminalemulation */
  71.  BOOL   adresssperre;        /* Adresse ausgeben */
  72.  char    vertreter[15];        /* Username des Vertreters */
  73.  ULONG    lastcall;        /* Datum/Zeit letzter Anruf, Aztec Format */
  74.  ULONG    gruppe;            /* Gruppenzugehörigkeit (ggf) */
  75.  int    updown;            /* Up-/Downloadverhältnis */
  76.  int    protokoll;        /* gewähltes Protokoll */
  77.  long    downloadfrei;        /* Downloadfreiraum in Bytes oder -1 */
  78.  BOOL    bell;            /* Glocke ein/aus */
  79.  int    editor;            /* Editor Typ (0 = ZeilenEd, 1 = FullScrEd) */
  80.  char    ansage[60];        /* Ansage Text */
  81.  UBYTE    Zeilenzahl;        /* Zeilenlaenge für FullScreenED */
  82.  UBYTE    CSI;            /* 0 = gesperrt, 1 = CSI, 2 = VT-100 */
  83.  char    pad[38];        /* zur Erweiterung */
  84.     /* ab hier Statistikinformationen */
  85.  int    anrufe;            /* Anzahl der Anrufe im System */
  86.  char   gebdate[12];        /* Geburtsdatum des Users */
  87.  ULONG    txt_upload;        /* Bytes geschriebener Texte */
  88.  ULONG    txt_download;        /* Bytes gelesener Texte */
  89.  ULONG    bin_upload;        /* Bytes Uploads */
  90.  ULONG    bin_download;        /* Bytes Downloads */
  91. } IUser;
  92.  
  93. #define    USR_GAST    0
  94. #define    USR_USER    1
  95. #define    USR_COSYSOP    2
  96. #define USR_SYSOP    3
  97.  
  98. #define    UML_AMIGA    0        /* Umlaut Typ Amiga */
  99. #define UML_IBM        1
  100. #define    UML_SIMULATION    2
  101.  
  102. Erklärung der einzelnen Einträge :
  103.  
  104. username     : der Username des Users, Eingabe bei ANTRAG. Der Username
  105.            darf kein's der Zeichen "/:#*$?" und kein Space ' ' ent-
  106.            halten.
  107. passwort     : Paßwort des Users, codiert, Eingabe bei ANTRAG oder PASSWORD
  108.            (Anubis private)
  109. userlevel    : Level des Users, Eingabe durch UserEd oder nach Antrag
  110. name         : Der Name des Users im Real Life, Eingabe bei ANTRAG oder
  111.            ANSCHRIFT
  112. strasse      : die Anschrift...
  113. ort          : Wohnort...
  114. telnr        : Telefonnummer des Users
  115. rechner      : Der Rechnertyp des Users
  116. umlaute      : Art der Umlaute, Einstellung durch SETUP, Werte siehe #defines
  117. status       : Der Userstatus des Users, Werte siehe #defines
  118.            (Anubis private)
  119. ansi         : eingestellte Terminalemulation, zur Zeit nur 0  = aus, 1 = ein
  120.            geplant : 1 = monochrom, 2 = Farbe, Einstellung durch SETUP
  121. adresssperre : 0 = Adresse ist freigegeben, 1 = Adresse für andere User gesperrt
  122. vertreter    : Vertreter für persönliche Mails, Einstellung über VERTRETER
  123. gruppe       : Gruppenbitdefinition, Werte von System zu System unterschiedlich
  124. updown         : Verhältnis Upload zu Download. Bei Uploads ist
  125.            downloadfrei = updown * übertragene Bytes
  126. protokoll    : eingestelltes Übertragungsprotokoll, von System zu System unter-
  127.            schiedliche Definition
  128. downloadfrei : Anzahl der Bytes an Downloadfreiraum für den User. -1 = unbegrenzt
  129. bell         : Glocke ein/aus
  130. editor       : 0 = ZeilenEd, 1 = FullScreenEd
  131. ansage       : Ansagetext, der beim Empfangen einer PM ausgegeben wird, Eingabe
  132.            über ANSAGE
  133. Zeilenzahl   : Anzahl der Zeilen für den FullScreenEd (Anubis private)
  134. CSI          : FullScreenEd Typ, 0 = gesperrt, 1 = CSI Codes, 2 = VT100 Codes
  135.            (Anubis private)
  136. pad          : eine Anzahl von freien Bytes, die für spätere Erweiterungen ge-
  137.            dacht sind.
  138.  
  139. Ab hier folgen reine Statistikinformationen, die ausgewertet werden können,
  140. aber nicht geändert werden sollten.
  141.  
  142. anrufe       : Anzahl der Anrufe hier im System, wird bei jedem Logoff hoch-
  143.            gezählt
  144. gebdate      : Geburtsdatum des Users, zur Zeit unbenutzt
  145. txt_upload   : Länge der geschriebenen Texte, in Bytes */
  146. txt_download : Länge der gelesenen Texte, in Bytes */
  147. bin_upload   : Länge der Binäruploads, in Bytes */
  148. bin_download : Länge der Binärdownloads, in Bytes */
  149.  
  150. Zu beachten ist, daß alle Felder, hinter denen "Anubis private" steht, nicht
  151. geändert werden dürfen, da es sonst zu großen Problemen kommen kann.
  152.  
  153. 2.2. Die Brettstruktur
  154. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  155.  
  156. Mit der nachfolgenden Struktur wird die Datei "Daten/Brettliste" im RAM ver-
  157. waltet.
  158. Die Brettliste ist immer alphabetisch sortiert, allerdings stehen Unter-
  159. bretter direkt hinter ihrem Brettverzeichnis. Die Sortierung wäre also
  160. nach <brettpfad>/<name>.
  161.  
  162. typedef struct
  163. {
  164.  char    name[20];            /* Name des Brettes */
  165.  char    brettpfad[60];            /* Brettpfadangabe in der Box */
  166.  char    diskpfad[40];            /* Directory Pfad */
  167.  char    passwort[15];            /* Passwort (optional) */
  168.  char    verwalter[15];            /* Username des Brettverwalters */
  169.  int    leselevel;            /* mind. Level zum Lesen */
  170.  int    schreiblevel;            /* mind. Level zum Schreiben */
  171.  int    maxmsg;                /* für den Cruncher */
  172.  int    typ;                /* 0 - Ascii Brett, 1 - Binär */
  173.  ULONG    date;                /* Datum des letzten Schreibzugriffs */
  174.  ULONG    gruppe;                /* Kennzeichnung der Gruppen */
  175.  char    infoline[60];            /* Infotext zu dem Brett */
  176.  ULONG    nettyp;                /* Netzzugehörigkeit des Brettes */
  177.  char    pad[20];            /* zur Erweiterung */
  178. } IBrett;
  179.  
  180. #define    BTYPE_ASCII    0
  181. #define    BTYPE_BIN    1
  182. #define    BTYPE_NET    2
  183. #define    BTYPE_BDIR    3
  184.  
  185. Erklärung der einzelnen Einträge :
  186.  
  187. name         : Der Name des Brettes. Bis auf einige Ausnahmen sind alle Zeichen
  188.            erlaubt. Es darf zu Anfang keines der Zeichen "+-<>/.#$" stehen,
  189.            da diese vom Programm anderweitig benötigt werden.
  190. brettpfad    : Dies ist der komplette Pfad, den das Brett im System hat. Dabei
  191.            steht hier nur der Pfad (also "Z-NETZ/RECHNER/AMIGA") in Großbuch-
  192.            staben. Der Name wird hier nicht wiederholt. Auch der im Z-Netz
  193.            häufig gebrauchte Slash '/' als erstes Zeichen taucht hier nicht
  194.            auf.
  195. diskpfad     : Der Pfad des Brettes auf der Disk/Platte. Darf nicht mit einem
  196.            Slash '/' abschließen.
  197. passwort     : Ein Paßwort, mit dem das Brett versehen werden kann. Jeder User,
  198.            der das Brett anwählt, ist gezwungen, dies einzugeben (Ausnahme :
  199.            Sysop). Dieses Paßwort ist uncodiert.
  200. verwalter    : Der Name eines Users, der der Verwalter dieses Brettes ist, in
  201.            Großbuchstaben. Hier dürfen nur User eingetragen werden, die
  202.            auch wirklich im System vorhanden sind.
  203. leselevel    : mind. Userlevel, den man zur Anwahl des Brettes braucht.
  204. schreiblevel : mind. Userlevel, den man zum Schreiben ins Brett braucht.
  205. maxmsg       : Anzahl der Nachrichten, auf die beim Befehl CRUNCH LIMIT her-
  206.            untergelöscht werden soll.
  207. typ         : Brettkennzeichnung, zur Zeit sind Ascii-, Binär- und Netzbretter
  208.            und Brettverzeichnisse möglich (Werte siehe BTYPE_ Konstanten).
  209. date         : Datum des letzten Schreibzugriffs auf das Brett. Dies ist
  210.            eine 4 Byte ULONG Variable, die mit einem Wert im Format des
  211.            Aztec 5.0d gefüllt ist. Dabei könnte es Probleme mit anderen
  212.            Compilern geben (z.B. DICE).
  213. gruppen      : Hier werden alle Gruppen definiert, die global Zugriff auf
  214.            das Brett haben dürfen (siehe ANUBIS Hauptdoku).
  215. infoline     : Ein String, der bei der Anwahl des Brettes ausgegeben wird (z.B.
  216.            eine kurze Beschreibung).
  217. nettyp         : dieser Wert gibt bei Netz-Brettern an, zu welchem Netz das Brett
  218.            gehört (z.Zt. noch nicht benutzt, sollte deshalb 0 sein).
  219. pad          : eine Anzahl von freien Bytes, die für spätere Erweiterungen ge-
  220.            dacht sind.
  221.  
  222.  
  223. 2.3. Die Indexstruktur
  224. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  225.  
  226. Mit der nachfolgenden Struktur werden alle Indexeinträge in den Brettern und
  227. auch in der PM verwaltet.
  228.  
  229. typedef struct
  230. {
  231.  char    absender[30];            /* Name des Absenders (+ evtl. Node) */
  232.  char    betreff[20];            /* Betreff oder Filename */
  233.  char    kurzbetreff[40];        /* Beschreibung für File oder Empfänger */
  234.  ULONG    size;                /* Größe in Bytes */
  235.  ULONG    date;                /* Erstellungszeit */
  236.  int    typ;                /* Art der Nachricht */
  237.  int    nr;                /* Nummer der Nachricht */
  238.  int    mode;                /* Moduszahl */
  239.  int    count;                /* Anzahl der Zugriffe auf das File */
  240.  ULONG    special;            /* spezielle Aktions Bits */
  241.  char    pad[20];            /* zur Erweiterung */
  242. } IIndex;
  243.  
  244. #define ITYPE_ASC    0
  245. #define ITYPE_BIN    1
  246.  
  247. #define    IMODE_READ    0
  248. #define    IMODE_PROT    1
  249. #define    IMODE_DEL    2
  250.  
  251. Erklärung der einzelnen Einträge :
  252.  
  253. absender      : Hier steht der Name des Users, der die Nachricht versandt hat.
  254.         Bei Netznachrichten steht hier evtl. noch der Netznode drin.
  255. betreff          : Überschrift über die folgende Nachricht. Bei Reply auf eine
  256.         schon bestehende Nachricht steht ein "re:" davor. Bei Binär-
  257.         files wird dieser Name als FileName verwendet.
  258. kurzbetreff   : Bei Binärfiles wird hier eine Kurzbeschreibung für das File
  259.         eingegeben. Wichtig : In der PM wird dieses Feld für den
  260.         Namen des Empfängers benutzt !!!
  261. size          : Die Größe der Nachricht in Bytes.
  262. date          : Das Absendedatum der Nachricht. Dies ist, wie auch bei der
  263.         Brettstruktur, eine 4 Byte ULONG Variable, die vom Aztec
  264.         geliefert wird. Diese ist nicht zu anderen Compilern kompa-
  265.         tibel und kann sich im Format ändern (Umstellung auf DICE).
  266. typ          : Kennzeichnung der Nachricht als ASCII oder Binär, siehe Konst.
  267. nr          : Die laufende Nummer der Nachricht im Brett. Aus dieser Nummer
  268.             resultiert auch der Filename. Der typische Name einer Nach-
  269.             richt ist <brettdiskpfad>/<nr>.
  270. mode          : gibt an, wie die Nachricht zu behandeln ist. Siehe dazu die
  271.         Konstanten. Wichtig : Nachrichten mit Modus IMODE_DEL sind
  272.         zwar im Index noch vorhanden, aber nicht mehr als File auf
  273.         dem Datenträger !!!
  274. count          : Anzahl der Lesezugriffe auf die Nachrichten (ANUBIS private).
  275.         Sollte nur lesend benutzt werden.
  276. special          : Ein Feld für spezielle Aktionsbits (noch nicht unterstützt,
  277.         sollte 0 sein).
  278. pad          : eine Anzahl von Bytes für spätere Erweiterungen.
  279.  
  280.  
  281. 2.4 Die Übergabe-Datei für Onlineprogramme
  282. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  283.  
  284. Die Parameter Datei wird vom ANUBIS Hauptprogramm beim Aufruf eines Online-
  285. Programms über EXECUTE unter ram:UserParam geschrieben. Dort stehen einige
  286. Sachen, die für Online-Programmierer vielleicht wichtig sein können.
  287.  
  288.  Aufbau der Datei
  289.  
  290.     2400            - dies ist die Baudzahl, die der User fährt
  291.     OLIVER            - der Username
  292.     9            - der Userlevel (0 - Gast, 9 - Sysop)
  293.     1            - Anzahl der Minuten Online
  294.     2000            - maximale Onlinezeit in Minuten
  295.     1            - 0 Modem-Login, 1 Console-Login
  296.     0            - 0 ANSI aus, 1 ANSI ein
  297.  
  298.  
  299. Alle Onlineprogramme, die diese Datei verarbeiten können, können im Zu-
  300. sammenhang mit ANUBIS benutzt werden.
  301.  
  302. 2.5 Programmkonverter
  303. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  304.  
  305. Für Sysops, die von anderen Programmen umsteigen möchten, wird es sicher
  306. darangelegen sein, ihre Daten auf das ANUBIS Format zu konvertieren. Mit
  307. Hilfe dieser Anleitung und dem Hilfsprogramm PWConv dürfte dies kein
  308. Problem sein. Ein Konverter für AmNet II Daten kann ist bei uns vorhanden.
  309. Sollte jemand einen Konverter für andere Programme geschrieben haben, kann
  310. er sie der Öffentlichkeit über uns zugänglich machen.
  311.  
  312.